#include "person.h"

person::person():name("person") {

}

person::person(const QString name):name(name){

}

QString person::queryName(QString name) const{
    QFile file("../menu/menu.txt");
    if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
        QTextStream in(&file);
        QString line;
        while (!in.atEnd()) {
            line = in.readLine();
            if (line.contains(name)) {

                QStringList parts = line.split(' ');
                QString result;
                if (parts.size() >= 2) {

                    result = parts[0]; // 第一个部分为菜品名称
                    result += " 价格：" + parts[1]; // 第二个部分为价格
                    return result;
                }
            }
        }
        file.close();
        throw "未找到该菜品!";
    } else {
        throw "无法打开menu文件!";
    }
}

QStringList person::queryPrice(double price1, double price2){
    QStringList myQueue;  // 创建 QStringList 对象 myQueue

    QFile file("../menu/menu.txt");  // 打开menu文件进行读取操作
    if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {  // 检查文件是否成功打开
        QTextStream in(&file);
        while (!in.atEnd()) {  // 逐行读取文件内容
            QString line = in.readLine();
            QString priceStr;
            QString name;

            // 提取菜品名称和价格
            int index = line.lastIndexOf(" ");
            if (index != -1) {
                name = line.left(index); // 提取菜品名称
                priceStr = line.mid(index + 1); // 提取价格部分
                double price = priceStr.toDouble(); // 将价格字符串转换为 double

                if (price >= price1 && price <= price2) {  // 判断价格是否在指定范围内
                    myQueue.append(name);  // 将菜品名称添加到 QStringList
                }
            }
        }
        file.close();  // 关闭文件
        return myQueue;  // 返回符合条件的菜品名称列表
    } else {
        // 文件打开失败时的处理
        QStringList emptyList;
        return emptyList;  // 返回空的 QStringList
    }
}

QStringList person::queryPrice(int price1, int price2) const{
    QStringList myQueue;  // 创建 QStringList 对象 myQueue

    QFile file("../menu/menu.txt");  // 打开menu文件进行读取操作
    if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {  // 检查文件是否成功打开
        QTextStream in(&file);
        while (!in.atEnd()) {  // 逐行读取文件内容
            QString line = in.readLine();
            QString priceStr;
            QString name;

            // 提取菜品名称和价格
            int index = line.lastIndexOf(" ");
            if (index != -1) {
                name = line.left(index); // 提取菜品名称
                priceStr = line.mid(index + 1); // 提取价格部分
                double price = priceStr.toDouble(); // 将价格字符串转换为 double

                if (price >= price1 && price <= price2) {  // 判断价格是否在指定范围内
                    myQueue.append(name);  // 将菜品名称添加到 QStringList
                }
            }
        }
        file.close();  // 关闭文件
        return myQueue;  // 返回符合条件的菜品名称列表
    } else {
        // 文件打开失败时的处理
        QStringList emptyList;
        throw emptyList;  // 返回空的 QStringList
    }
}

QString person::getPrice(QString name) const{
    QFile file("../menu/menu.txt");
    if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
        QTextStream in(&file);
        QString line;
        QString result;
        while (!in.atEnd()) {
            line = in.readLine();
            if (line.contains(name)) {
                QStringList parts = line.split(' ');
                if (parts.size() >= 2) {
                    result = parts[1]; // 第一个部分为菜品名称
                }
            }
        }
        file.close();
        return result;
    } else {
        throw "无法打开menu文件!";
    }
}

QStringList person::queryAll(){
    QStringList myQueue;
    QFile file("../menu/menu.txt");

    if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
        QTextStream in(&file);
        QString line;
        while (!in.atEnd()) {
            line = in.readLine();
            myQueue.append(line);
        }
        file.close();
        return myQueue;
    } else {
        // 文件打开失败时的处理
        QStringList emptyList;
        throw emptyList;  // 返回空的 QStringList
    }
}

